package com.cn.jx.manager.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.cn.jx.manager.po.DictData;

/**
 * <p>DictDataRepository 数据字典mapper层操作数据库的接口
 * <p>实现<{@link BaseRepository <tt>公用</tt>}}
 * 
 * @author <h1>jiangxu2  2019年11月21日</h1>
 * @version v1.11.20.2019
 * @since 1.0
 * 
 */
public interface DictDataRepository  extends JpaRepository<DictData,String>,JpaSpecificationExecutor<DictData>{
	
	/**<p>定义HQL查询标记删除{@link DictData} */
	@Modifying
	@Query("update DictData c set c.delFlg=1,c.validFlg=0 where c.id=:pid ")
	public void deleteEntityById(@Param(value="pid") String pid);
	
	/**<p>定义HQL找回 恢复删除{@link DictData} */
	@Modifying
	@Query("update DictData c set c.delFlg=0,c.validFlg=1 where c.id=:pid ")
	public void recoverEntityById(@Param(value="pid") String pid);
	
	/**<p>定义HQL查询 根据字典类型查询字典信息 {@link DictData} <p>有效信息delFlg=0 validFlg=1*/
	@Query("from DictData  where dictType=:dtype and level=1 and delFlg=0 and validFlg=1  ")
	public List<DictData> findDictDataByType(@Param(value = "dtype") String dtype);
	
	/**<p>定义HQL查询 根据字典值查询字典信息 {@link DictData} <p>有效信息delFlg=0 validFlg=1*/
	@Query("from DictData  where value=:value and delFlg=0 and validFlg=1 ")
	public DictData findDictByCode(@Param(value = "value") String value);
	
	/**<p>定义HQL查询 根据字典类型查询字典信息 {@link DictData} <p>有效信息delFlg=0 validFlg=1*/
	@Query("from DictData  where parent=:pid  and delFlg=0 and validFlg=1  ")
	public List<DictData> findDictDataByParent(@Param(value = "pid") String pid);
	
	@Query("select value from DictData  where dictType=:dtype ")
	public List<String> findDictValueByType(@Param(value = "dtype") String dtype);
	
	@Query("select id from DictData  where value=:code ")
	public String findIdByCode(@Param(value = "code") String code);
}
